import axios from 'axios';
import { getToken } from './token';
import router from '../router';
import store from   '../store';
const api = axios.create({
    baseURL: store.state.baseUrl, // 请求的公共地址部分
    timeout: 30000 // 请求超时时间 当请求时间超过5秒还未取得结果时 提示用户请求超时
})

// 请求拦截器   
api.interceptors.request.use(config => {
    config.headers.Authorization = getToken() // 请求头中添加token
    // config 请求的信息
    return config // 将配置完成的config对象返回出去 如果不返回 请求则不会进行
}, err => {
    // 请求发生错误时的处理 抛出错误
    Promise.reject(err)
})

api.interceptors.response.use(res => {
    // 我们一般在这里处理，请求成功后的错误状态码 例如状态码是500，404，403
    // res 是所有相应的信息
    if(res.data.code == 200) {
        return Promise.resolve(res.data)
    } else if (res.data.code == '403') {
        // router.push('/')
        localStorage.removeItem('userInfo');
    } else {
        return Promise.resolve({
            message: '请求失败',
            data: {},
            code: res.status
        })
    }
}, err => {
    // 服务器响应发生错误时的处理
    Promise.reject(err)
})

export default api